﻿/*
 * zdouble.cxx
 *
 *  Created on: 2015年4月3日
 *      Author: Fifi Lyu
 */

#include "zpsoe/zalgorithm/zdouble.h"
#include <cmath>
#include <sstream>

using std::stringstream;

namespace zpsoe {

namespace zalgorithm {

namespace zdouble {
ZPSOE_SHARED_LIB_API double round(const double &x, const int32_t &precision) {
    double i, y;
    if (x == 0)
        return x;

    i = x * pow(10.00, static_cast<double>(precision));

    if (x > 0)
        i = static_cast<int64_t>(i + 0.5);
    else if (x < 0)
        i = static_cast<int64_t>(i - 0.5);

    y = i * pow(10.00, -precision);

    return y;
}

} /* namespace zdouble */

} /* namespace zalgorithm */

} /* namespace zpsoe */
